home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / tools / cpx_acc / cpxbasic / doc / changes.txt < prev    next >
Encoding:
Text File  |  1994-09-22  |  14.4 KB  |  315 lines

  1. ==> Version 1.07; Jan Starzynski (p67@hp1.uni-rostock.de)
  2. * im VT-52 Emulator fehlt nur noch das Setzen von Farben (ESC b & c)
  3. * CHR$ 0 erzeugt eine String, der ein Null-Zeichen enthält, auβerdem
  4.   eine 4 Byte lange Kennung hierfür. (bedingt durch C, wo die Null als
  5.   Ende-Symbol einer Zeichenkette steht). Der Ausdruck LEN CHR$ 0
  6.   liefert folglich 5.
  7. * erweiterte Funktionen:
  8.     - bak=GEMDOS(x)
  9.     + Dateifunktionen
  10.         . FOPEN name$[,opt$], schließe bereits geöffnete Datei,
  11.                 Öffne neue Datei, opt$ darf folgende Optionen
  12.                 beinhalten:
  13.                 b Binärmodus, alle ausgegebenen Zeichen werden
  14.                  unverändert übernommen (z.B. keine lf->cr/lf Wandlung)
  15.                 n schaffe neue Datei: eine bereits bestehende Datei
  16.                   wird zuerst gelöscht
  17.         . FCLOSE, Datei schließen
  18.         . FINPUT "prompt";what... ,Lies aus geöffneter Datei bzw.
  19.                  wenn keine geöffnet von der Tastatur
  20.                  ( wenn aus Datei gelesen wird, wird der Prompt unterdrückt)
  21.         . FPRINT what, schreibe ans Ende der geöffneten Datei bzw.
  22.                  Bildschirm
  23.         . FSEL$ [ext$], bringt eine Dateiselektbox auf den Schirm und gibt die
  24.                  eingegebene Datei als String zurück. Wenn Abbruch gedrückt
  25.                  wurde, ist das ein leerer String. ext$ wird als
  26.                  Dateimaske verwendet (z.B. *.BAS), Standard ist '*.*'
  27.         . ERRNO, sollte nach FPRINT oder FINPUT gelesen werden.
  28.           Enthält 0, wenn alles in Ordnung gegangen ist, sonst einen Wert<>0
  29.           Nach jedem lesen wird ERRNO wieder automatisch auf 0 gesetzt.
  30.         . Die Dateifunktionen sind nicht besonders schnell, sondern
  31.           besonders sicher gehalten. Sie sollen vor allem dem bequemen
  32.           Austausch von Daten dienen und nicht umfangreichen
  33.           Dateimanipulationen.
  34.     + Spezielle Befehle, um auf Schnittstellen zugreifen zu können
  35.       Erlaubte Geräte sind dabei
  36.         . "PRN", Drucker
  37.         . "AUX", serielle Standard-Schnittstelle
  38.         . "CON", die Konsole
  39.         . "MIDI", Midiport
  40.         . "IKBD", Tastaturprozessor
  41.         . "RCON", Konsole ohne Emulation
  42.         . "MOD1", Modem 1
  43.         . "MOD2", Modem 2
  44.         . "SER1", Seriell 1
  45.         . "SER2", Seriell 2
  46.         . nicht alle Geräte sind für alle Rechner oder alle Zwecke
  47.           sinvoll, da liegt die Verantwortung beim Programmierer
  48.           * a=INBYTE dev$, liest ein Byte von einer Schnittstelle
  49.             Der Wertebereich der Rückgabewerte liegt zwischen 0 und 255.
  50.             Ist der Rückgabewerte <0, war kein Zeichen verfügbar
  51.           * a=OUTBYTE dev$,byte, übergibt ein Byte. Ist der Rückgabewert>=0
  52.             konnte das Zeichen ausgegeben werden.
  53.  
  54. ---------------------------------------------------------------------
  55. ==> Version 1.04; Änderungen von Torsten Dix, Stand: 20.08.1993
  56. * erweiterte Funktionen:
  57.     + FILES "x:\path\*.*"
  58.         Dateien und Directory anzeigen
  59.     + MKDIR "x:\path" 
  60.         Erzeuge Directory
  61.     + CHDIR "x:\path"
  62.         Wechsle Directory und/oder Laufwerk
  63.     + RMDIR "x:\path"
  64.         Loesche Directory
  65.     + a$=PATH$
  66.         Liefert aktuelles Laufwerk und Path
  67.     + a$=TIME$
  68.         Liefert Zeit und Datum als ASCII-String
  69.     + t=TIMER
  70.         Liefert Zeit seit Einschalten/Reset in 1/200sec
  71. * Lokaler Path wird verwaltet 
  72.  
  73. ==> Version 1.04; Änderungen von Oliver Teuber, Stand: 20.08.1993
  74. * erweiterte Funktionen:
  75.     + bak=ALERT(1,"[1][Hallo][OK]")
  76.         Anzeigen einer form_alert-Box.
  77.     . bak=GEMDOS(x)
  78.         Gemdos-Call ohne Parameter ...
  79. * Bugfix: Es gab einen Fehler beim Laden von Quelltexten.
  80.   (setvbuf auch bei "NULL"-Filepointer!)
  81.  
  82. ---------------------------------------------------------------------
  83. ==> Version 1.03; Änderungen von Jan Starzynski, Stand: 11.8.1993
  84. * jede Menge Optimierungen
  85.   Ergebnis: mehr Funktion bei gleicher Länge
  86. * Bugfix: Es gab einen harten Fehler beim Anlegen von Feldern.
  87.   (ein double-Werte wurde mit 8 Byte angesetzt, hat in PURE-C aber 16?!)
  88. * Es gibt jetzt vier verschiedene CPX
  89.     + BASIC000.CPX, die Variante, die überall laufen sollte
  90.     + BASICA00.CPX, nutzt statt eines eigenen den Systemzeichensatz,
  91.                     muβ dazu aber LINEA-INIT nutzen. Könnte bei den
  92.                     Nicht-Standard-Auflösungen (z.B. mit
  93.                     Grafikkarten) Probleme geben (probieren).
  94.     + BASIC030.CPX, läuft nur auf Systemem mit (mind.)
  95.                     68020-Prozessor und 68881-FPU.
  96.     + BASICA30.CPX, wie 030, nutzt aber auch den Systemzeichensatz
  97.                     (wie A00)
  98.     + wozu das ganze Kuddelmuddel? Nun ja. Wer einen TT oder Falcon
  99.       hat, wird sich freuen, über 10 KByte in der Länge zu sparen und
  100.       auβerdem ein schnelleres Programm zu haben. Den
  101.       Systemzeichensatz habe ich implementiert, um
  102.         a. Platz zu sparen
  103.         b. im Basic die gleichen Ausgaben zu erhalten wie in
  104.            anderen Programmen
  105. * Zeitverhalten verbessert (Umschalten von Basic zu GEM nach 50 msec statt
  106.  100 msec und 20 msec Zeit für GEM statt 50 msec)
  107.  Das macht die Ausgaben etwas flieβender und die Arbeit mit dem Hauptprogramm
  108.  auch. Wenn nötig, holt sich GEM die Zeit, die es braucht, von allein.
  109. * verschiedene Zahlenbasen erlaubt für Eingabe
  110.     + $Zahl, Hexadezimalzahl (Ziffern: 0-9,a-f,A-F)
  111.     + &Zahl, Oktalzahl       (Ziffern: 0-7)
  112.     + %Zahl, Binärzahl       (Ziffern: 0-1)
  113.     +  Zahl, Dezimalzahl     (Ziffern: 0-9)
  114. * Break durch CTRL-C
  115. * Abbruch einer Eingabe durch CTRL-C
  116. * Anhalten/Fortsetzen der Bildschirmausgabe mit CTRL-S/CTRL-Q
  117. * alle Tastenkombinationen mit CTRL werden abgefangen und teilweise als
  118.   Funktionstasten für die wichtigsten BASIC-Befehle benutzt
  119.     + B GOSUB
  120.     + C BREAK, mit SHIFT: CONTINUE
  121.     + D DATA
  122.     + E RUN, mit SHIFT: RUN FSEL$ '*.BAS'
  123.     + F FOR, mit SHIFT: FOPEN FSEL$ '*.TXT'
  124.     + G GOTO
  125.     + I IF
  126.     + L LIST
  127.     + M MERGE, mit SHIFT: MERGE FSEL$ '*.BAS'
  128.     + N NEXT
  129.     + O LOAD, mit SHIFT: LOAD FSEL$ '*.BAS'
  130.     + Q BYE
  131.     + R RETURN
  132.     + S SAVE, mit SHIFT: SAVE FSEL$ '*.BAS'
  133.     + T THEN
  134. * INPUT kann durch '#' abgekürzt werden (wie PRINT durch '?')
  135. * alle BASIC-Schlüsselwörter können durch einen '.' abgekürzt werden
  136.   z.B. 'PRINT x' durch 'pr. x'. Es wird dabei aber nicht überprüft,
  137.   ob die Abkürzung mehrere Bedeutungen hat, sondern die erste gefundene
  138.   genommen. Nach dem Punkt können noch weitere Buchstaben folgen,
  139.   z.B.: 'u.' für 'USING' und 'u.$' für 'USING$'.
  140. * Wird ein Buchstabe mir der linken Maustaste angeklickt oder ein
  141.   Bereich mit gedrückter linker Maustaste überfahren, werden die
  142.   Buchstaben in die Eingabe übernommen.
  143.   Doppelklick erzeugt zusätzlich ein Return.
  144. * Bei INPUT können die Variablen wie bei PRINT durch ',' oder ';'
  145.   oder auch nur durch Leerzeichen voneinander getrennt werden.
  146.   Außerdem können für alle Variablen einzelne Promptstrings angegeben
  147.   werden.
  148. * (kleine) Hilfe über HELP-Taste
  149. * der VT-52 Emulator kann jetzt auch REV_ON und REV_OFF (esc-p und esc-q)
  150.     +    Enter reverse video mode
  151.     +    Exit reverse video mode
  152. * Sichern der Quelltexte bei SAVE mit Endung '.BAS' (statt '.TEXT')
  153. * Wenn das BOOTINIT-Flag des CPX gesetzt ist, werden das beim Booten aktuelle
  154.   Laufwerk und der Pfad bei jeder Dateioperation als Standardwerte gesetzt.
  155.   Dadurch gammeln die .BAS-Dateien nicht überall auf der Platte rum.
  156.   Ist BOOTINIT nicht gesetzt, wird als Standard 'C:\' genutzt. Falls es dieses
  157.   Laufwerk nicht gibt: 'A:\'.
  158. * erweiterte Funktionen:
  159.     + SQU x == SQR x
  160.     + RCP x für 1/x
  161.     + alle trigonometrischen Funktionen und ihre inversen
  162.         . SIN x,COS x,TAN x
  163.         . ASIN x,ACOS x,ATAN x == ARCTAN x
  164.     + alle Hyperbelfunktionen und ihre inversen
  165.         . SINH x,COSH x,TANH x
  166.         . ASINH x,ACOSH x,ATANH x
  167.     + erweiterte logarithmische Funktionen
  168.         . LN x == LOG x für den natürlichen Logarithmus log_{e}
  169.         . LG x für log_{10}
  170.         . LD x für log_{2}
  171.     + erweiterte Exponentiationsfunktionen
  172.         . EXP x, Standard e^x
  173.         . TEN x, 10^x
  174.         . TWO x, 2^x
  175.     + Konvertierungen zwischen Zahlenbasen
  176.         . HEX$ x, Zahlausgabe als hexadizmaler String
  177.         . OCT$ x, Zahlausgabe als oktaler String
  178.         . BIN$ x, Zahlausgabe als binärer String
  179.     + FACT x, Fakultätsfunktion
  180.     + RAND, Zufallszahlen zwischen 0 und 1, werden mit Hilfe der
  181.             XBIOS-Funktion Random() erzeugt.
  182.         . RAND x, Zufallszahlen im Bereich 0 bis x-1
  183.     + Dateifunktionen
  184.         . FOPEN name$, schließe bereits geöffnete Datei, Öffne neue Datei
  185.         . FCLOSE, Datei schließen
  186.         . FINPUT "prompt";what... ,Lies aus geöffneter Datei bzw.
  187.                  wenn keine geöffnet von der Tastatur
  188.                  ( wenn aus Datei gelesen wird, wird der Prompt unterdrückt)
  189.         . FPRINT what, schreibe ans Ende der geöffneten Datei bzw.
  190.                  Bildschirm
  191.         . FSEL$ ext$, bringt eine Dateiselektbox auf den Schirm und gibt die
  192.                  eingegebene Datei als String zurück. Wenn Abbruch gedrückt
  193.                  wurde, ist das ein leerer String. ext$ wird als
  194.                  Dateimaske verwendet (z.B. *.BAS)
  195.         . ERRNO, sollte nach FPRINT oder FINPUT gelesen werden.
  196.           Enthält 0, wenn alles in Ordnung gegangen ist, sonst einen Wert<>0
  197.           Nach jedem lesen wird ERRNO wieder automatisch auf 0 gesetzt.
  198.         . Die Dateifunktionen sind nicht besonders schnell, sondern
  199.           besonders sicher gehalten. Sie sollen vor allem dem bequemen
  200.           Austausch von Daten dienen und nicht umfangreichen
  201.           Dateimanipulationen.
  202.     + Winkelsysteme, Standard ist RAD
  203.         . DEGREE, alle Winkel werden als Altgrad betrachtet
  204.                  (Vollkreis hat 360 Grad)
  205.         . GRAD,  Neugrad (Vollkreis hat 400 Grad)
  206.         . RAD,   Radiant (Vollkreis hat 2*Pi)
  207.     + Umrechnen von Dezimalgrad in Grad,Min,Sec und umgekehrt
  208.         . DMS$ x, umrechnen in einen String GG:MM:SS,rest
  209.         . DEG x$, Umrechen eines Strings der obigen Form in Dezimalgrad
  210.     + CLS, Löschen des Bildschirmes und Setzen des Cursor in die linke
  211.            obere Ecke
  212.     + CLEAR löscht alle Variablen, Schleifen und setzt die Datas zurück
  213.             (nicht in Unterprogrammen einsetzen!)
  214.     + PEEK und POKE liefern laufen im Supervisor-Modus, die Interrupts
  215.           werden ausgeschaltet
  216.         . außerdem gibt es jetzt auch PEEKW, PEEKL, POKEW, POKEL
  217.           um words (2 Byte) und longs (4 Byte) auf einmal lesen
  218.           und setzen zu können
  219.     + INKEY$, liefert einen leeren String (""), wenn keine Taste 
  220.              gedrückt wurde, sonst die zuletzt gedrückte Taste
  221.              Ausserdem bewirkt ein Aufruf dieser 'Funktion' mit Zwang
  222.              ein Umschalten zu GEM, kann also genutzt werden, etwas
  223.              mehr Rechenzeit freizugeben.
  224.     + USING,USING$ präzisieren der Ausgabegenauigkeit, -breite und
  225.                    -ausrichtung
  226.         . wird eine Breite<0 angegeben, erfolgt die Ausgabe linksbündig,
  227.           sonst rechtsbündig
  228.         . USING, setzt die Zahl der ausgegebenen Nachkommastelle auf 10
  229.         . USING x, setzt die Zahl der Nachkommastellen auf x
  230.         . USING x,y, wie oben, es werden Leerzeichen ausgegeben, bis
  231.             Breite y erreicht ist.
  232.         . mit USING gesetzte Werte gelten für alle folgenden Ausgaben
  233.         . USING$ ist USING für die Ausgabe von Strings: die Nachkommastellen
  234.           sind hier die Anzahl der maximal auszugebenden Buchstaben
  235.         . Die Angabe der Präzision kann unterbleiben. Es muß dann nach USING
  236.           gleich das Komma folgen.
  237.         . WARNUNG: wird die Breite ungleich 0 oder 1 gesetzt, werden
  238.           Escape-Sequenzen oft nicht mehr gehen, da mit Leerzeichen
  239.           aufgefüllt wird.
  240.           Bsp.:  
  241.                 USING$ 0,4:PRINT chr$(27),'E'
  242.           bewirkt die Ausgabe des Escape-Zeichens mit 3 Leerzeichen
  243.           dahinter. Das 'E' wird dann als normaler Buchstabe 
  244.           interpretiert.
  245.           Mit 
  246.                 USING$:PRINT chr$(27),'E'
  247.           funktioniert alles wie gedacht.
  248.           Aber auch
  249.                 USING$ 0,4:PRINT chr$(27)+'E'
  250.           funktioniert (+ statt , )!
  251.     + LABEL line, kann zur Zuweisung einer Zeilennummer zu einer
  252.             Variablen verwendet werden. Bei einem RENUM-Befehl wird
  253.             die Zahl hinter LABEL richtig umgerechnet. Dadurch
  254.             geht z.B.:
  255.             LIST
  256.             -->    1 h=LABEL 1:goto h
  257.             RENUM
  258.             LIST
  259.             -->    10 h=LABEL 10:goto h
  260.     + Grafikfunktionen, der Punkt (0,0) ist links unten, die
  261.       x-Koordinaten laufen von 0 bis 255 und die y-Koordinaten
  262.       von 0 bis 175
  263.         . PLOT x,y setzt einen Punkt an der Stelle (x,y)
  264.         . LINE x1,y1,x2,y2, zieht eine Linie von (x1,y1) zu (x2,y2)
  265.         . CIRCLE x1,y1,r, zieht eine Kreis um (x1,y) mit Radius r
  266.     + CONTINUE, mit STOP oder Ctrl-C abgebrochen Programme können
  267.                 mit diesem Befehl weitergeführt werden.
  268.                 Ohne STOP oder Ctrl-C bewirkt CONTINUE gar nichts,
  269.                 kann also als Dummy-Anweisung benutzt werden.
  270.     + TRON, schaltet den Trace-Modus ein: nach jeder abgearbeiteten
  271.             Zeile wird diese gelistet und auf ein Return gewartet.
  272.             Mit Ctrl-C kann unterbrochen und mit CONTINUE fortgesetzt
  273.             werden. Das gibt die Möglichkeit, Variablen zu betrachten
  274.             e.t.c.
  275.             Hier gibt es einen Fehler: die erste abgearbeitete Programm-
  276.             zeile wird zweimal angezeigt. 
  277.     + TROFF, schaltet den Trace-Modus wieder aus.
  278.  
  279. ---------------------------------------------------------------------
  280. ==> Version 0.01; Änderungen von Oliver Teuber, Stand: 24.04.1993
  281. * Erste CPX-BASIC-Version (just for fun), mit ein paar Fehlern :-)
  282. * Es gibt zwei verschiedene CPX-Versionen
  283.     + BASIC000.CPX, die Variante, die überall laufen sollte
  284.     + BASIC030.CPX, läuft nur auf Systemem mit (mind.)
  285.                     68020-Prozessor und 68881-FPU.
  286. * vt52-Terminal
  287.     +    Cursor up
  288.     +    Cursor down
  289.     +    Cursor forward
  290.     +    Cursor backward
  291.     +    Clear screen
  292.     +    Home cursor
  293.     +    Reverse index
  294.     -    Erase to end of page
  295.     -    Clear to end of line
  296.     -    Insert Line
  297.     -    Delete Line
  298.     +    Position cursor
  299.     +    Set foreground color
  300.     +    Set background color
  301.     -    Erase beginning of display
  302.     +    Enable cursor
  303.     +    Disable cursor
  304.     +    Save cursor position
  305.     +    Restore cursor position
  306.     -    Erase entire line
  307.     -    Erase beginning of line
  308.     -    Enter reverse video mode
  309.     -    Exit reverse video mode
  310.     -    Wrap at end of line
  311.     -    Discard at end of line
  312. * erweiterte Funktionen:
  313.     +    GOTOXY x,y
  314.             Cursor nach Spalte x und Zeile y
  315.